<html>
    <head>
        <title> 数据存储   Storage</title>
    </head>
    <body>
        <script>
              //   数据存储
              
                    /*
                        一、概述


                             1、storage 与 浏览器的 loacalStorage 的关系

                                        在 uni-app 中， storage并非简单等同于浏览器的 localStorage,而是一套 "跨平台的存储方案" 

                                        其底层实现会根据运行环境自动适配(如浏览器、微信小程序、App等)，自动适配不同的存储机制， 

                                        localStorage只是它在H5端的一种实现方式。

                             2、具体区别于联系

                                     <1>、H5端：
                                        
                                            在浏览器环境下， uni-app 的 uni.setStorageSync()、uni.getStorageSync() 等 API 确实会映射到浏览器的 localStorage，
                                            
                                            数据存储在浏览器的本地存储中，遵循 localStorage 的特性（如容量限制约 5MB、持久化存储、同域名共享等）。

                                     <2>、非H5端：

                                            在微信 / 支付宝等小程序、App（iOS/Android）中，uni-app 的 storage 会使用对应平台的原生存储方案，

                                            与浏览器 localStorage 完全无关：

                                                <1>、小程序端：使用小程序自带的 wx.setStorageSync() 等 API，数据存储在小程序的独立沙箱中；

                                                <2>、App 端：使用原生的本地存储（如 iOS 的 NSUserDefaults、Android 的 SharedPreferences），数据存储在 App 的私有目录中。

                    */

                    /*
                         二、uni.setStorage(OBJECT)

                                1、概述

                                    将数据存储在本地缓存中指定的 key 中，会覆盖掉原来该 key 对应的内容，这是一个异步接口。 
                                    
                                2、setStorage 兼容性

                                                HarmonyOS
                                                HBuilderX 4.23

                                3、OBJECT 参数说明

                                                    参数名	    类型	        必填	    说明

                                                ①、key	        String	        是	    本地缓存中的指定的 key

                                                ②、data	        Any	            是	    需要存储的内容，只支持原生类型、及能够通过 JSON.stringify 序列化的对象

                                                ③、success	    Function	    否	    接口调用成功的回调函数

                                                ⑥、fail	        Function	    否	    接口调用失败的回调函数

                                                ⑦、complete	    Function	    否	    接口调用结束的回调函数（调用成功、失败都会执行）

                                4、示例：

                                               uni.setStorage({
                                                    key:'storageKey',
                                                    data:'hello',
                                                    success:function(){
                                                        console.log('success')
                                                    }
                                               })    
                                                    
                                5、注意：

                                        uni-、uni_、dcloud-、dcloud_为前缀的key，为系统保留关键前缀。

                                        如uni_deviceId、uni_id_token，请开发者为key命名时避开这些前缀。
                    */

                    /*
                        三、uni.setStorageSync(KEY,DATA)

                                 1、概述
                                                    
                                        将 data 存储在本地缓存中指定的 key 中，会覆盖掉原来该 key 对应的内容，这是一个同步接口。
                                        
                                 2、参数说明

                                            参数	类型	必填	    说明

                                        ①、key	   String	是	    本地缓存中的指定的 key

                                        ②、data	    Any	    是	    需要存储的内容，只支持原生类型、及能够通过 JSON.stringify 序列化的对象

                                3、示例

                                        try {
                                            uni.setStorageSync('storage_key', 'hello');
                                        } catch (e) {
                                            // error
                                        }
                    */

                    /*
                        四、uni.getStorage(OBJECT)


                                1、概述

                                        从本地缓存中异步获取指定 key 对应的内容。

                                2、getStorage 兼容性

                                        HarmonyOS
                                        HBuilderX 4.23

                                3、OBJECT 参数说明

                                                参数名	        类型	    必填	            说明

                                                ①、key	           String	    是	            本地缓存中的指定的 key

                                                ②、success	       Function	    是	            接口调用的回调函数，res = {data: key对应的内容}

                                                ③、fail	           Function	    否	            接口调用失败的回调函数

                                                ④、complete	       Function	    否	            接口调用结束的回调函数（调用成功、失败都会执行）

                                            ★、success 返回参数说明

                                                            参数	类型	说明
                                                            data	Any	key 对应的内容

                                4、示例：

                                           uni.getStorage({
                                                key:'storage_key',
                                                success:function(res){
                                                    console.log(res.data)
                                                }
                                           })
                    */

                    /*
                        五、uni.getStorageSync(KEY)

                                   1、概述
                                   
                                                从本地缓存中同步获取指定 key 对应的内容
                                            
                                    2、getStorageSync 兼容性
                                                HarmonyOS
                                                HBuilderX 4.23
                                    
                                    3、参数说明

                                                参数	类型	必填	说明
                                                key	String	是	本地缓存中的指定的 key

                                    4、示例：

                                                try {
                                                    const value = uni.getStorageSync('storage_key');
                                                    if(value){
                                                        console.log(value)
                                                    }
                                                }catch(e){
                                                    // error
                                                }
                    */

                    /*
                         六、uni.getStorageInfo(OBJECT)

                                     1、概述

                                              异步获取当前 storage 的相关信息。
                                              
                                      2、平台差异说明

                                                App             	H5	微信小程序	支付宝小程序	百度小程序	小红书小程序
                                                HBuilderX 2.0.3+	√	  √	        √	            √	        √

                                      3、getStorageInfo 兼容性

                                                HarmonyOS
                                                HBuilderX 4.23

                                      4、OBJECT 参数说明

                                                    参数名	    类型	必填	    说明

                                                ①、success	Function	是	    接口调用的回调函数，详见返回参数说明

                                                ②、fail	F   unction	    否	    接口调用失败的回调函数

                                                ③、complete	Function	否	    接口调用结束的回调函数（调用成功、失败都会执行）

                                            ★、success 返回参数说明

                                                            参数	        类型	            说明

                                                        ①、keys	        Array＜String＞	        当前 storage 中所有的 key

                                                        ②、currentSize	Number	                当前占用的空间大小, 单位：kb

                                                        ③、limitSize	Number	                限制的空间大小, 单位：kb


                                       5、示例：

                                                uni.getStorageInfo({
                                                    success:function(res){
                                                        console.log(res.keys);
                                                        console.log(res.currentSize);
                                                        console.log(res.linitSize)
                                                    }
                                                })
                    */

                    /*
                        七、uni.getStorageInfoSync()

                                       1、概述
                                       
                                                    同步获取当前 storage 的相关信息。

                                       2、平台差异说明

                                                    App	                H5	微信小程序	支付宝小程序	百度小程序	小红书小程序
                                                    HBuilderX 2.0.3+	√	√	        √	            √	            √

                                        3、getStorageInfoSync 兼容性
                                                    HarmonyOS
                                                    HBuilderX 4.23

                                        4、返回值

                                                    类型	                        描述

                                                    GetStorageInfoSuccess	uni.getStorageInfo成功回调参数

                                                    ★、GetStorageInfoSuccess 类型结构

                                                                名称	            类型	        必填	默认值	兼容性	        描述

                                                            ①、keys	            Array<string>	    是	    -	            当前 storage 中所有的 key

                                                            ②、currentSize	        number	        是	    -	            当前占用的空间大小, 单位：kb

                                                            ③、limitSize	        number	        是	    -	            限制的空间大小, 单位：kb

                                        5、示例：

                                                try{
                                                    const res = uni.getStorageInfoSync();
                                                    console.log(res.keys);
                                                    console.log(res.currentSize);
                                                    console.log(res.limitSize);
                                                }catch(e){
                                                    // error
                                                }
                    */

                    /*
                        八、uni.removeStorage(OBJECT)

                                        1、概述

                                               从本地缓存中异步移除指定 key。
                                               
                                        2、removeStorage 兼容性

                                                HarmonyOS
                                                HBuilderX 4.23

                                        3、OBJECT 参数说明

                                                 参数名	        类型	    必填	    说明

                                                ①、key	       String	    是	    本地缓存中的指定的 key
                                                
                                                ②、success	   Function	    是	    接口调用的回调函数

                                                ③、fail	       Function	    否	    接口调用失败的回调函数

                                                ④、complete	   Function	    否	    接口调用结束的回调函数（调用成功、失败都会执行）

                                        4、示例：

                                                uni.removeStorage({
                                                    key:'storage_key',
                                                    success:function(res){
                                                         console.log('success');
                                                    }
                                                })
                    */

                    /*
                         九、uni.removeStorageSync(KEY)

                                        1、概述

                                               从本地缓存中同步移除指定 key。
                                               
                                        2、removeStorageSync 兼容性
                                                HarmonyOS
                                                HBuilderX 4.23

                                        3、参数说明

                                                参数名	类型	必填	说明
                                                key	String	是	本地缓存中的指定的 key

                                        4、示例：

                                                try {
                                                    uni.removeStorageSync('storage_key');
                                                }
                    */

                    /*
                         十、uni.clearStorage()

                                        1、概述
                                                                
                                                清理本地数据缓存。

                                        2、clearStorage 兼容性
                                                HarmonyOS
                                                HBuilderX 4.23

                                        3、示例

                                                uni.clearStorage();
                    */

                    /*
                         十一、uni.clearStorageSync()

                                        1、概述

                                               同步清理本地数据缓存。
                                               
                                        2、clearStorageSync 兼容性
                                                HarmonyOS
                                                HBuilderX 4.23

                                        3、示例

                                                try{
                                                    uni.clearStorageSync();
                                                }catch(e){
                                                    // error
                                                }
                    */

                    /*
                        十二、注意

                                  uni-app的Storage在不同端的实现不同：
                                  
                                  1、H5端为localStorage，浏览器限制5M大小，是缓存概念，可能会被清理

                                  2、App端为原生的plus.storage，无大小限制，不是缓存，是持久化的

                                  3、各个小程序端为其自带的storage api，数据存储生命周期跟小程序本身一致，即除用户主动删除或超过一定时间被自动清理，否则数据都一直可用。

                                  4、微信小程序单个 key 允许存储的最大数据长度为 1MB，所有数据存储上限为 10MB。

                                  5、支付宝小程序单条数据转换成字符串后，字符串长度最大200*1024。同一个支付宝用户，同一个小程序缓存总上限为10MB。

                                  6、百度小程序策略详见、抖音小程序策略详见(https://developer.open-douyin.com/docs/resource/zh-CN/mini-app/develop/api/data-caching/tt-get-storage)

                                  7、非App平台清空Storage会导致uni.getSystemInfo获取到的deviceId改变
                    */
        </script>
    </body>
</html>